package org.example;

import cn.hutool.core.io.resource.ResourceUtil;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.IOException;
import java.io.InputStream;

/**
 * apache poi 的简单例子
 */
public class Demo01 {
    public static void main(String[] args) {
        try {
            //读取resource目录下文件
            InputStream stream = ResourceUtil.getStream("demo01.xlsx");
            //创建工作簿对象
            XSSFWorkbook xssfWorkbook = new XSSFWorkbook(stream);
            //获取工作簿下sheet的个数
            int sheetNum = xssfWorkbook.getNumberOfSheets();
            // 遍历每一个表格
            for (int i = 0; i < sheetNum; i++) {
                // 获取第i个表格
                XSSFSheet sheet = xssfWorkbook.getSheetAt(i);
                // 获取当前表格的最大行数,从零开始计算
                int maxRow = sheet.getLastRowNum();
                // 遍历当前表格的每一行
                for (int row = 0; row <= maxRow; row++) {
                    //该行的最大列数
                    int maxCellNum = sheet.getRow(row).getLastCellNum();
                    //遍历每一列,从1开始计算
                    for (int cellNum = 0; cellNum < maxCellNum; cellNum++) {
                        // 获取当前行第一个单元格的字符串数值,  row 行，cell 列
                        String str = sheet.getRow(row).getCell(cellNum).getStringCellValue();//这里需要注意，如果该单元格是字符串，则用getStringCellValue，如果是数字用getNumericCellValue,其他类型类似
                        System.out.print(str+"|");
                    }
                    System.out.println("\n"+"--------------------------------");
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}
